home *** CD-ROM | disk | FTP | other *** search
/ Aminet 8 / Aminet 8 (1995)(GTI - Schatztruhe)[!][Oct 1995].iso / Aminet / dev / gcc / gcc270_src.lha / gcc-2.7.0-amiga / config / vax / xm-vms.h < prev   
C/C++ Source or Header  |  1995-06-15  |  7KB  |  177 lines

  1. /* Configuration for GNU C-compiler for Vax.
  2.    Copyright (C) 1987, 1994, 1995 Free Software Foundation, Inc.
  3.  
  4. This file is part of GNU CC.
  5.  
  6. GNU CC is free software; you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as published by
  8. the Free Software Foundation; either version 2, or (at your option)
  9. any later version.
  10.  
  11. GNU CC is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. GNU General Public License for more details.
  15.  
  16. You should have received a copy of the GNU General Public License
  17. along with GNU CC; see the file COPYING.  If not, write to
  18. the Free Software Foundation, 59 Temple Place - Suite 330,
  19. Boston, MA 02111-1307, USA.  */
  20.  
  21. /* #defines that need visibility everywhere.  */
  22. #define FALSE 0
  23. #define TRUE 1
  24.  
  25. #ifdef VAXC
  26. /* if compiling with VAXC, need to fix problem with <stdio.h>
  27.    which defines a macro called FILE_TYPE that breaks "tree.h".
  28.    Fortunately it uses #ifndef to suppress multiple inclusions.
  29.    Three possible cases:
  30.     1) <stdio.h> has already been included -- ours will be no-op;
  31.     2) <stdio.h> will be included after us -- "theirs" will be no-op;
  32.     3) <stdio.h> isn't needed -- including it here shouldn't hurt.
  33.    In all three cases, the problem macro will be removed here.  */
  34. #include <stdio.h>
  35. #undef FILE_TYPE
  36. #endif
  37.  
  38. /* target machine dependencies.
  39.    tm.h is a symbolic link to the actual target specific file.   */
  40. #include "tm.h"
  41.  
  42. /* This describes the machine the compiler is hosted on.  */
  43. #define HOST_BITS_PER_CHAR 8
  44. #define HOST_BITS_PER_SHORT 16
  45. #define HOST_BITS_PER_INT 32
  46. #define HOST_BITS_PER_LONG 32
  47. #define HOST_BITS_PER_LONGLONG 64
  48.  
  49. #define HOST_FLOAT_FORMAT VAX_FLOAT_FORMAT
  50.  
  51. #define SUCCESS_EXIT_CODE 1
  52. #define FATAL_EXIT_CODE (44 | 0x10000000)  /* Abort, and no DCL message.  */
  53.  
  54. /* A couple of conditionals for execution machine are controlled here.  */
  55. #ifndef VMS
  56. #define VMS
  57. #endif
  58.  
  59. #ifndef __GNUC__
  60. /* not present, at least in VAX-11 C (VMS) v2.2 */
  61. #define R_OK 4
  62. #define W_OK 2
  63. #define X_OK 1
  64. #define F_OK 0
  65. #endif
  66.  
  67. #define GCC_INCLUDE_DIR "///not used with VMS///"    /* nonsense string for now */
  68.  
  69. /* and define a local equivalent (sort of) for unlink */
  70. #define unlink remove
  71.  
  72. /* Specify the list of include file directories.  */
  73. #define INCLUDE_DEFAULTS \
  74. {                                    \
  75.   { "GNU_GXX_INCLUDE:", 1, 1 },                        \
  76.   { "GNU_CC_INCLUDE:", 0, 0 },    /* GNU includes */            \
  77.   { "SYS$SYSROOT:[SYSLIB.]", 0, 0 }, /* VAX-11 "C" includes */        \
  78.   { ".", 0, 1 },        /* Make normal VMS filespecs work.  */    \
  79.   { 0, 0, 0 }                                \
  80. }
  81.  
  82. /* Under VMS a directory specification can be enclosed either in square
  83.    brackets or in angle brackets.  Thus we need to check both.  This
  84.    macro is used to help compare filenames in cp-lex.c.
  85.  
  86.    We also need to make sure that the names are all lower case, because
  87.    we must be able to compare filenames to determine if a file implements
  88.    a class.  */
  89.  
  90. #define FILE_NAME_NONDIRECTORY(C)                \
  91. ({                                \
  92.    char * pnt_ = (C), * pnt1_;                    \
  93.    pnt1_ = pnt_ - 1;                        \
  94.    while (*++pnt1_)                        \
  95.      if ((*pnt1_ >= 'A' && *pnt1_ <= 'Z')) *pnt1_ |= 0x20;    \
  96.    pnt1_ = rindex (pnt_, ']');                     \
  97.    pnt1_ = (pnt1_ == 0 ? rindex (pnt_, '>') : pnt1_);        \
  98.    pnt1_ = (pnt1_ == 0 ? rindex (pnt_, ':') : pnt1_);        \
  99.    (pnt1_ == 0 ? pnt_ : pnt1_ + 1);                \
  100.  })
  101.  
  102. /* Macro to generate the name of the cross reference file.  The standard
  103.    one does not work, since it was written assuming that the conventions
  104.    of a unix style filesystem will work on the host system.  */
  105.  
  106. #define XREF_FILE_NAME(BUFF, NAME)    \
  107.   s = FILE_NAME_NONDIRECTORY (NAME);            \
  108.   if (s == NAME) sprintf(BUFF, "%s_gxref", NAME);    \
  109.   else {                        \
  110.     strcpy(BUFF, NAME);                    \
  111.     strcat(BUFF, "_gxref");                \
  112.   }
  113.  
  114. /* Macro that is used in cp-xref.c to determine whether a file name is
  115.    absolute or not.  */
  116.  
  117. #define FILE_NAME_ABSOLUTE_P(NAME)    \
  118.     (FILE_NAME_NONDIRECTORY (NAME) != (&NAME[1]))
  119.  
  120. /* FILE_NAME_JOINER is defined to be the characters that are inserted between 
  121.    a directory name and a filename in order to make an absolute file
  122.    specification.  Under VMS the directory specification contains all of the
  123.    required characters, so we define this to be a null string.  */
  124.  
  125. #define FILE_NAME_JOINER ""
  126.  
  127. #ifdef VAXC
  128. /* Customizations/kludges for building with DEC's VAX C compiler
  129.    rather than GCC.  */
  130. #define NO_SYS_PARAMS_H        /* don't have <sys/params.h> */
  131. #define NO_STAB_H        /* don't have <stab.h> */
  132. #define USE_C_ALLOCA        /* using alloca.c */
  133. #define QSORT_WORKAROUND    /* do not use VAXCRTL's qsort */
  134.  
  135. /* use ANSI/SYSV style byte manipulation routines instead of BSD ones */
  136. #define bcopy(s,d,n)    memcpy((d),(s),(n))
  137. #define bzero(d,n)    memset((d),0,(n))
  138. #define bcmp(l,r,n)    memcmp((l),(r),(n))
  139. #define index    strchr
  140. #define rindex    strrchr
  141.  
  142. /* rename all too-long external symbol names to avoid warnings */
  143. #define bc_check_for_full_enumeration_handling    bc_check_for_full_enum_handling
  144. #define check_for_full_enumeration_handling    check_for_full_enum_handling
  145. #define current_function_contains_functions    curfunc_contains_functions
  146. #define current_function_epilogue_delay_list    curfunc_epilogue_delay_list
  147. #define current_function_has_nonlocal_goto    curfunc_has_nonlocal_goto
  148. #define current_function_has_nonlocal_label    curfunc_has_nonlocal_label
  149. #define current_function_internal_arg_pointer    curfunc_internal_arg_pointer
  150. #define current_function_outgoing_args_size    curfunc_outgoing_args_size
  151. #define current_function_pretend_args_size    curfunc_pretend_args_size
  152. #define current_function_returns_pcc_struct    curfunc_returns_pcc_struct
  153. #define current_function_returns_pointer    curfunc_returns_pointer
  154. #define current_function_uses_const_pool    curfunc_uses_const_pool
  155. #define current_function_uses_pic_offset_table    curfunc_uses_pic_offset_table
  156. #define expand_start_loop_continue_elsewhere    expnd_start_loop_cont_elsewhere
  157. #define flag_schedule_insns_after_reload    flag_sched_insns_after_reload
  158. #define lookup_name_current_level_global    lookup_name_current_level_gbl
  159. #define maybe_building_objc_message_expr    maybe_building_objc_msg_expr
  160. #define output_deferred_addressed_constants    output_deferred_addr_constants
  161. #define reg_overlap_mentioned_for_reload_p    reg_overlap_mtnd_for_reload_p
  162. #define reposition_prologue_and_epilogue_notes    repos_prolog_and_epilog_notes
  163. #define rtx_equal_function_value_matters    rtx_equal_func_value_matters
  164. #define set_new_first_and_last_label_num    set_new_first_and_last_lbl_num
  165. #define thread_prologue_and_epilogue_insns    thread_prolog_and_epilog_insns
  166. #endif
  167.  
  168. /* We need to avoid the library qsort routine, due to a serious bug
  169.    in VAXCRTL.  (Sorting anything with size that's not a multiple of 4
  170.    after having previously sorted something that was a multiple of 4
  171.    can produce wrong results and result in data corruption.)  We'll
  172.    use our own substitute (in vax.c) instead.  */
  173. /* #define QSORT_WORKAROUND */
  174. #ifdef QSORT_WORKAROUND
  175. #define qsort not_qsort
  176. #endif
  177.